技術問答
技術文章
iT 徵才
Tag
聊天室
2023 鐵人賽
登入/註冊
問答
文章
Tag
邦友
鐵人賽
搜尋
第 12 屆 iThome 鐵人賽
DAY
25
0
自我挑戰組
30天|入門NestJs連載學習筆記
系列 第
26
篇
D25 ch 22 整潔的架構
12th鐵人賽
azsx96385
團隊
Outcome First
2020-10-10 01:38:04
802 瀏覽
分享至
架構都有同個目標-關注點分離
透過將軟體分層,實現關注點分離,每個業務規則至少有一層屬於他們,使用者及系統也至少有一層屬於他們
共同特徵
獨立於框架
好的架構不依賴於現有強大的軟體程式庫,它允許你使用這樣框架作為工具,而非強迫你將系統塞進入有限約束中
可測試
業務規則可以在沒有UI、資料庫、web伺服器或其他外部元素的情況下,進行測試
獨立於UI
無需更改系統其他部分,UI也可以很輕易做更改,ex. web → APP
獨立於資料庫
你的業務規則不綁定資料庫,你可以隨意將Mongo\Bigtable\couchDB抽換成Oracle\SQLserver
獨立於任何外部代理
業務規則對於外界介面一無所知
依賴規則-原始碼依賴關係只能指向內部,朝向更高層級策略
內圈是策略,外圈是機制
越內圈軟體,層次越高,越外圈,層次越低
內圈沒有任何東西可以對外圈事情有所了解
外圈宣告名稱不能在內圈程式碼中出現(函式、類別、變數、任何被命名之軟體實體)
外圈宣告的資料格式不應該被內圈使用,尤其是格式是由外圈中框架所產生,內圈不應該被外圈任何東西影響
實體層
Entity 封裝了企業級的關鍵業務資料,當外部變化,實體曾是最不可能被改變的
使用案例層
使用案例層,包含應用程式特定的業務規則,封裝並實作系統所有使用案例
這些使用案例編排實體之間的資料流,並指揮這些實體使用他們的關鍵業務規則,來實現使用案例的目標
介面轉接層
介面轉接層,的軟體是一組轉接器,可以將資料從最適合於使用案例和實體的格式→轉換→最適合某些外部代理(ex. DB or web)的格式
介面轉接層,包括GUI的MVC架構、表示器(presenter)、視圖、控制器controller
模型 model 可能只是資料結構,他從控制器傳給使用案例,並且之後還會從使用案例回傳給表示器(presenter)和視圖(view)
在介面轉接層,資料從最適合實體和使用案例的形式,轉換為最適合正在使用的任何持久性框架(ex. DB )
在介面轉接層,之內的所有程式碼都不應該對於資料庫有所暸解
任何其他必須將資料從外部格式(ex. 外部服務)轉換為使用案例和實體所使用的內部格式轉接器,也屬於這一層
框架和驅動層
框架和驅動層,通常由框架和工作組成(ex. 資料庫和web框架),一般來說,我們不會在此寫太多程式碼
框架和驅動層是所有細節的去處,web是細節,資料庫是細節,我們將這些東西放最外層,因為他們不會有什麼危害
留言
追蹤
檢舉
上一篇
D25 Ch 22 整潔的架構
系列文
30天|入門NestJs連載學習筆記
共
26
篇
目錄
RSS系列文
訂閱系列文
1
人訂閱
22
D22 台南的散步點心
23
D23 台南|國慶煙火在漁光
24
D24 無暇程式碼-CH20 商業邏輯
25
D25 Ch 22 整潔的架構
26
D25 ch 22 整潔的架構
完整目錄
直播研討會
{{ item.subject }}
{{ item.channelVendor }}
{{ item.webinarstarted }}
|
{{ formatDate(item.duration) }}
直播中
立即報名
尚未有邦友留言
立即登入留言
iThome鐵人賽
參賽組數
1123
組
團體組數
52
組
累計文章數
23097
篇
完賽人數
656
人
看影片追技術
看更多
{{ item.subject }}
{{ item.channelVendor }}
|
{{ formatDate(item.duration) }}
直播中
熱門tag
看更多
15th鐵人賽
13th鐵人賽
14th鐵人賽
12th鐵人賽
11th鐵人賽
鐵人賽
2019鐵人賽
2018鐵人賽
javascript
2017鐵人賽
python
windows
php
c#
windows server
linux
css
react
程式設計
vue.js
熱門問題
請問如何讓20出頭的人,由不會到會呢
一般硬體防火牆,對外 大多要限制那些服務?
請問有人可以幫我下載這個百度雲盤檔案到Google drive嗎?
想請問公司信箱網域被GMAIL封鎖的解決方法
租用電腦服務
請問目前有甚麼免費的簽到系統可以用?
這是信箱被盜了嗎
[已解決]寶可夢GO亞洲預選賽的報名表單是不是設計錯了...
Rocky Linux 登入問題
Ubuntu 鍵盤滑鼠突然無法使用,但畫面並非凍結
熱門回答
請問如何讓20出頭的人,由不會到會呢
請問目前有甚麼免費的簽到系統可以用?
一般硬體防火牆,對外 大多要限制那些服務?
使用unity做單機遊戲再改成線上可行嗎?
YouTube 轉MPEG應用哪種軟體?
熱門文章
Bigme B251 25.1吋 彩色電子紙螢幕
所有常用HTML標籤的層級和用途
ubuntu 24.04 LTS 與嘸蝦米
Seednet 網域名稱申請.網址移轉.郵件代管.網站代管 設定畫面 遠傳 FET SEEDNET 新世紀資通 網域代管 DNS SPF DMARC 設定畫面 DKIM
NVIDIA ChatRTX 個人測試報告加登入及中文化
IT邦幫忙
×
標記使用者
輸入對方的帳號或暱稱
Loading
找不到結果。
標記
{{ result.label }}
{{ result.account }}